package br.com.sbc.sessionBean;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.sbc.ejb.entity.Assunto;


@Stateless
public class AssuntoSessionBean {

	@PersistenceContext
	private EntityManager entityManager;
	
	public void incluirAssunto(Assunto assunto) {
		this.entityManager.persist(assunto);
	}
	public void alterarAssunto(Assunto assunto) {
			this.entityManager.merge(assunto);
	}
	@SuppressWarnings("unchecked")
	public List<Assunto> consultaTodosAssuntos() {
		Query query = entityManager.createNamedQuery("Assunto.consultarTodosAssuntos");
		try {
			return query.getResultList();
		} catch (NoResultException e) {
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public List<Assunto> consultarNomeAssuntos() {
		Query query = entityManager.createNamedQuery("Assunto.consultarNomeAssuntos");
		try {
			return  query.getResultList();
		} catch (NoResultException e) {
			return null;
		}
	}
	public Assunto consultaAssuntoPorNome(String nomeAssunto) {
		Query query = entityManager.createNamedQuery("Assunto.consultarAssuntoPorNome");
		query.setParameter("nomeAssunto", nomeAssunto);
		try {
			return (Assunto) query.getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public List<Assunto> consultaAssuntoPorNomeComplete(String digitado) {
		Query query = entityManager.createNamedQuery("Assunto.consultarAssuntoPorNomeComplete");
		query.setParameter("digitado", digitado + "%");
		try {
			return query.getResultList();
		} catch (NoResultException e) {
			return null;
		}
	}
	public Long contarPostagemPorAssunto (String nomeAssunto){
		Query query = entityManager.createNamedQuery("Postagem.contarPostagensPorAssunto");
		query.setParameter("nomeAssunto", nomeAssunto);
		try {
			return (Long) query.getSingleResult();
		} catch (Exception e) {
			return null;
		}
	
	}
	
	
}